As portable computing devices, such as smart phones, smart glasses and other devices, become more ubiquitous, there is an interest to provide such devices with localization and mapping capabilities. Localization can be partially addressed by relying on systems that use global positioning system (GPS) signals or triangulation of cell tower signals to calculate position. Mapping can be partially addressed with enterprise solutions, such as having cars configured with specialized equipment drive through and map streets. Localization and mapping benefit consumers with maps and location-based services. However, such services tend to be limited to use outdoors, since GPS signals or cell tower signals may be blocked within buildings, and since mapping for portable computing devices typically has not extended to indoor environments. Moreover, commercial localization and mapping services are generally unable to provide accuracy higher than several meters with respect to position.
Visual-based inertial navigation systems rely on information obtained from images and inertial measuring devices in order to achieve localization and/or mapping. Since visual-based inertial navigation systems do not require signals from GPS or cell towers, such systems may be used indoors where GPS and cell signals cannot reach or are unavailable due to interference. Furthermore, visual-based inertial navigation systems enable very high position accuracy, e.g., on the order of centimeters. However, visual-based inertial navigation systems are typically computationally intensive as they need to process large amounts of image data acquired from an image detector, such as a camera, and inertial readings generated by an inertial measurement unit (IMU), all in real-time. In addition, to achieve highly accurate measurements of position, a history of information related to previous poses (positions and orientations), inertial measurements and image features is typically stored, thus requiring devices to use a substantial amount of memory and consequently large computation time to process this information.